home *** CD-ROM | disk | FTP | other *** search
Wrap
'************************************************************************** '* "How to Make Computers Work for You" setup proceedure '************************************************************************** '$DEFINE DEBUG ''Define for script development/debugging '$INCLUDE 'setupapi.inc' '$INCLUDE 'mscpydis.inc' ''System '$INCLUDE 'msdetect.inc' ''Detects Avalilable Disk Space ''Application constants and defaults CONST APPTITLE = "How To - Computers" ''Title to display while installing app CONST APPDRIVE = "C:" ''Default drive for app CONST APPPATH = "\MCWFY\" ''Default path for app CONST APPSIZE = 1000000 ''Approx. size of application files (for drive space warning) CONST INIFILE = "MCWFY.INI" ''INI file for app info CONST PROGGROUP = "CRT Applications" ''Name of program group for app CONST PROGITEM = "How To - Computers" ''Name of program item for app CONST PROGEXE = "MCW.EXE" ''Executable file for app CONST DRVTITLE = "Video for Windows Runtime Drivers" ''Title to display whil installing VfW drivers ''Dialog ID's CONST DLG_WELCOME = 100 CONST DLG_ASKQUIT = 200 CONST DLG_DESTPATH = 300 CONST DLG_EXITFAILURE = 400 CONST DLG_EXITQUIT = 600 CONST DLG_EXITSUCCESS = 700 CONST DLG_APPHELP = 900 CONST DLG_CDPATH = 1000 CONST DLG_DESTTOOSMALL = 1100 CONST DLG_WINTOOSMALL = 1200 CONST DLG_RECPATH = 1300 CONST DLG_REGISTER = 1400 CONST DLG_RESTART = 2600 CONST DLG_RESTARTOPT = 2700 CONST DLG_BADPATH = 6400 ''Bitmap ID CONST LOGO = 1 GLOBAL SizeReq& '' Total Disk Size required for installation GLOBAL DESTPATH$ ''Destination path GLOBAL DESTDRIVE$ ''Destination drive GLOBAL CDPATH$ ''CD-ROM path GLOBAL CDDRIVE$ ''CD-ROM drive GLOBAL RECPATH$ ''Student record path GLOBAL RECDRIVE$ ''Student record drive GLOBAL WINPATH$ ''Windows path GLOBAL WINSYSPATH$ ''Windows system path GLOBAL WINDRIVE$ ''Windows drive DECLARE SUB InstallApp DECLARE SUB BuildVfW DECLARE SUB InstallVfW DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING DECLARE FUNCTION OnWindowsNT LIB "INIUPD.DLL" AS INTEGER DECLARE FUNCTION VflatdPresent LIB "iniupd.DLL" AS INTEGER DECLARE SUB Reboot LIB "iniupd.dll" DECLARE fUNCTION ExitWindowsExec LIB "User" (Exec$, Param$) AS INTEGER INIT: ''Set constants CUIDLL$ = "mscuistf.dll" ''Custom user interface dll HELPPROC$ = "FHelpDlgProc" ''Help dialog procedure ''Windows paths WINPATH$=GetWindowsDir() WINSYSPATH$=GetWindowsSysDir() WINDRIVE$=MID$(WINPATH$, 1, 1) ''Check windows version WIN32ENABLED% = 0 MajorVer% = GetWindowsMajorVersion() MinorVer% = GetWindowsMinorVersion() IF MajorVer% < 3 OR (MajorVer% = 3 AND MinorVer% < 10) THEN i% = DoMsgBox("Microsoft Windows version 3.10 or greater is required for this software. Please upgrade your version of Windows.", "Installation Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND) END END IF IF OnWindowsNT() THEN i% = DoMsgBox("This version of Video for Windows does not run on Windows NT.", "Installation Problem", MB_OK+MB_TASKMODAL+MB_ICONHAND) END END IF SetBitmap CUIDLL$, LOGO SetTitle APPTITLE szInf$ = GetSymbolValue("STF_SRCINFPATH") IF szInf$ = "" THEN szInf$ = GetSymbolValue("STF_CWDDIR") + "SETUP.INF" END IF ReadInfFile szInf$ ''Default destination path DESTPATH$=APPDRIVE+APPPATH ''default GetLocalHardDrivesList "HARDDRIVE" if GetListLength("HARDDRIVE")>0 then DESTPATH$=GetListItem("HARDDRIVE", 1)+":"+APPPATH end if ''Default CD-ROM path ''Note: CD-ROMS look like read-only network drives. CDPATH$="D:\" ''default GetNetworkDrivesList "NETWORKDRIVE" if GetListLength("NETWORKDRIVE")>0 then for i%=1 to GetListLength("NETWORKDRIVE") step 1 temp$=GetListItem("NETWORKDRIVE",i%)+":\" if IsDirWritable(temp$) = 0 then CDPATH$=temp$ end if next i% end if ''Default Student record path RECPATH$="A:\" ''default GetRemovableDrivesList "REMOVABLEDRIVE" if GetListLength("REMOVABLEDRIVE")>0 then RECPATH$=GetListItem("REMOVABLEDRIVE", 1)+":\" end if '' Welcome dialog WELCOME: sz$ = UIStartDlg(CUIDLL$, DLG_WELCOME, "FInfoDlgProc", DLG_APPHELP, HELPPROC$) IF sz$ = "CONTINUE" THEN UIPop 1 ELSE GOSUB ASKQUIT GOTO WELCOME END IF ''Check space on windows drive BuildVfW SizeReq& = GetCopyListCost ("","", "") IF SizeReq& <> 0 THEN GOSUB WINTOOSMALL ERROR STFQUIT END IF '' Get destination path GETDEST: SetSymbolValue "EditTextIn", DESTPATH$ SetSymbolValue "EditFocus", "END" GETDESTL1: sz$ = UIStartDlg(CUIDLL$, DLG_DESTPATH, "FEditDlgProc", DLG_APPHELP, HELPPROC$) DESTPATH$ = GetSymbolValue("EditTextOut") DESTDRIVE$ = MID$(DESTPATH$, 1, 1) IF sz$ = "CONTINUE" THEN IF IsDirWritable(DESTPATH$) = 0 THEN GOSUB BADPATH GOTO GETDESTL1 ELSEIF IsDriveValid(DESTDRIVE$)=0 THEN GOSUB BADPATH GOTO GETDESTL1 END IF UIPop 1 ELSEIF sz$ = "REACTIVATE" THEN GOTO GETDESTL1 ELSE GOSUB ASKQUIT GOTO GETDEST END IF ''Check space on destination drive DiskSize&=GetFreeSpaceForDrive(MID$(DESTPATH$,1,1)) If GetFreeSpaceForDrive(WINDRIVE$)< APPSIZE then GOSUB DESTTOOSMALL GOTO GETDEST EndIf '' Get CD path GETCD: SetSymbolValue "EditTextIn", CDPATH$ SetSymbolValue "EditFocus", "END" GETCDL1: sz$ = UIStartDlg(CUIDLL$, DLG_CDPATH, "FEditDlgProc", DLG_APPHELP, HELPPROC$) CDPATH$ = GetSymbolValue("EditTextOut") CDDRIVE$ = MID$(CDPATH$, 1, 1) IF sz$ = "CONTINUE" THEN IF IsDirWritable(CDPATH$) THEN GOSUB BADPATH GOTO GETCDL1 ELSEIF IsDriveValid(CDDRIVE$)=0 THEN GOSUB BADPATH GOTO GETCDL1 END IF UIPop 1 ELSEIF sz$ = "BACK" THEN UIPop 1 GOTO GETDEST ELSEIF sz$ = "REACTIVATE" THEN GOTO GETCDL1 ELSE GOSUB ASKQUIT GOTO GETCD END IF '' Get Record path - removed 11/5/94 ''GETREC: '' SetSymbolValue "EditTextIn", RECPATH$ '' SetSymbolValue "EditFocus", "END" ''GETRECL1: '' sz$ = UIStartDlg(CUIDLL$, DLG_RECPATH, "FEditDlgProc", DLG_APPHELP, HELPPROC$) '' RECPATH$ = GetSymbolValue("EditTextOut") '' RECDRIVE$ = MID$(RECPATH$, 1, 1) '' '' IF sz$ = "CONTINUE" THEN '' IF IsDriveValid(RECDRIVE$)=0 THEN '' GOSUB BADPATH '' GOTO GETRECL1 '' END IF '' UIPop 1 '' ELSEIF sz$ = "BACK" THEN '' UIPop 1 '' GOTO GETCD '' ELSEIF sz$ = "REACTIVATE" THEN '' GOTO GETRECL1 '' ELSE '' GOSUB ASKQUIT '' GOTO GETREC '' END IF '' Registration prompt REGISTER: sz$ = UIStartDlg(CUIDLL$, DLG_REGISTER, "FInfoDlgProc", DLG_APPHELP, HELPPROC$) IF sz$ = "CONTINUE" THEN UIPop 1 ELSEIF sz$ = "BACK" THEN UIPop 1 GOTO GETCD ELSEIF sz$ = "REACTIVATE" THEN GOTO REGISTER ELSE GOSUB ASKQUIT GOTO GETCD END IF '' Do installation CreateDir DESTPATH$, cmoNone OpenLogFile MakePath(DESTPATH$, "SETUP.LOG"), 0 InstallApp InstallVfW WriteToLogFile "Final error state: "+STR$(ERR)+" Message: "+ERROR$(ERR)+" File: "+ERF+" Line: "+STR$(ERL) CloseLogFile '' The following bit of code is copied (more or less) verbatim from the VFW 1.1 '' setup. I can't so how it can work because _msrstst.exe & _mssetup.bat don't '' appear to exist. MJP 24/3/94 '' Restart Windows: if it has to updates ACM from DOS, it restarts Windows automatically '' else, it gives the user the choice DEST$ = GetWindowsDir() RESTRT% = RestartListEmpty () Exe$ = DEST$ + "\_msrstrt.exe" Batch$ = DEST$ + "\_mssetup.bat" empty$ = "" RESTART: IF RESTRT% = 0 THEN sz$ = UIStartDlg(cuidll$, DLG_RESTART, "FInfo0DlgProc", 0, "") IF sz$ = "REACTIVATE" THEN GOTO RESTART ENDIF I% = ExitExecRestart () RemoveFile Exe$, cmoForce RemoveFile Batch$, cmoForce END ELSE sz$ = UIStartDlg(CUIDLL$, DLG_RESTARTOPT, "FQuitDlgProc", 0, "") IF sz$ = "CONTINUE" THEN I% = ExitWindowsExec (Exe$, empty$) IF I% = 0 THEN GOTO RESTART ELSE END ENDIF ELSEIF sz$ = "EXIT" THEN UIPopAll END ELSEIF sz$ = "REACTIVATE" THEN GOTO RESTART ELSE UIPop 1 END IF END IF QUIT: ON ERROR GOTO ERRQUIT IF ERR = 0 THEN dlg% = DLG_EXITSUCCESS ELSEIF ERR = STFQUIT THEN dlg% = DLG_EXITQUIT ELSE OpenLogFile MakePath(DESTPATH$, "SETUP.ERR"), 0 WriteToLogFile "Error on quitting: "+STR$(ERR)+" Message: "+ERROR$(ERR)+" File: "+ERF+" Line: "+STR$(ERL) CloseLogFile dlg% = DLG_EXITFAILURE END IF QUITL1: sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "") IF sz$ = "REACTIVATE" THEN GOTO QUITL1 END IF UIPop 1 END ERRQUIT: i% = DoMsgBox("Setup sources were corrupted!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND) END BADPATH: sz$ = UIStartDlg(CUIDLL$, DLG_BADPATH, "FInfo0DlgProc", 0, "") IF sz$ = "REACTIVATE" THEN GOTO BADPATH END IF UIPop 1 RETURN ASKQUIT: sz$ = UIStartDlg(CUIDLL$, DLG_ASKQUIT, "FQuitDlgProc", 0, "") IF sz$ = "EXIT" THEN UIPopAll ERROR STFQUIT ELSEIF sz$ = "REACTIVATE" THEN GOTO ASKQUIT ELSE UIPop 1 END IF RETURN '' Not enough space on windows drive WINTOOSMALL: sz$ = UIStartDlg(CUIDLL$, DLG_WINTOOSMALL, "FInfo0DlgProc", 0, "") IF sz$ = "REACTIVATE" THEN GOTO WINTOOSMALL END IF UIPop 1 RETURN '' Not enough space on destinition drive DESTTOOSMALL: sz$ = UIStartDlg(CUIDLL$, DLG_DESTTOOSMALL, "FInfo0DlgProc", 0, "") IF sz$ = "REACTIVATE" THEN GOTO DESTTOOSMALL END IF UIPop 1 RETURN '** '** Purpose: '** Builds the copy list for Video for Windows runtime drivers '** Arguments: '** none. '** Returns: '** none. '************************************************************************* SUB BuildVfW STATIC SrcDir$ = GetSymbolValue("STF_SRCDIR") ClearCopyList AddSectionFilesToCopyList "VfW Runtime", SrcDir$, WINSYSPATH$ AddSectionFilesToCopyList "OLE2", SrcDir$, WINSYSPATH$ AddSectionFilesToCopyList "ACM Drivers", SrcDir$, WINSYSPATH$ AddSectionFilesToCopyList "MPlayer", SrcDir$, WINPATH$ AddSectionFilesToCopyList "AVICodecs", SrcDir$, WINSYSPATH$ AddSectionFilesToCopyList "Indeo-ini", SrcDir$, WINPATH$ END SUB '** '** Purpose: '** Builds the copy list and installs Video for Windows runtime drivers '** Arguments: '** none. '** Returns: '** none. '************************************************************************* SUB InstallVfW STATIC WriteToLogFile "InstallVfW" SetTitle DRVTITLE SrcDir$ = GetSymbolValue("STF_SRCDIR") BuildVfW SetRestartDir WINPATH$ CopyFilesInCopyList WriteToLogFile "VfW files copied" IF VflatdPresent() = 0 THEN CreateSysIniKeyValue WINPATH$ + "system.ini", "386Enh", "device", "dva.386", cmoOverwrite END IF CreateIniKeyValue WINPATH$ + "system.ini", "Drivers", "VIDC.CVID", "iccvid.drv", cmoOverwrite CreateIniKeyValue WINPATH$ + "system.ini", "Drivers", "VIDC.MSVC", "msvidc.drv", cmoOverwrite CreateIniKeyValue WINPATH$ + "system.ini", "Drivers", "VIDC.IV31", "indeov.drv", cmoOverwrite CreateIniKeyValue WINPATH$ + "system.ini", "Drivers", "VIDC.MRLE", "MSRLE.drv", cmoOverwrite I% = DoesIniKeyExist (WINPATH$+"system.ini", "Drivers", "VIDC.RT21") IF I% = 0 THEN CreateIniKeyValue WINPATH$ + "system.ini", "Drivers", "VIDC.RT21", "indeov.drv", cmoOverwrite END IF CreateIniKeyValue WINPATH$ + "system.ini", "Drivers", "VIDC.YVU9", "indeov.drv", cmoOverwrite CreateIniKeyValue WINPATH$ + "WIN.INI", "mci extensions", "avi", "AVIVideo", cmoOverwrite CreateIniKeyValue WINPATH$ + "system.ini", "mci", "AVIVideo", "mciavi.drv", cmoOverwrite CreateIniKeyValue WINPATH$ + "system.ini", "Drivers", "WaveMapper", "msacm.drv", cmoOverwrite CreateIniKeyValue WINPATH$ + "system.ini", "Drivers", "MSACM.msadpcm", "msadpcm.acm", cmoOverwrite CreateIniKeyValue WINPATH$ + "system.ini", "Drivers", "MSACM.imaadpcm", "imaadpcm.acm", cmoOverwrite CreateIniKeyValue WINPATH$ + "control.ini", "drivers.desc", "msacm.drv", "Microsoft Sound Mapper V2.00", cmoOverwrite CreateIniKeyValue WINPATH$ + "control.ini", "drivers.desc", "msadpcm.acm", "Microsoft ADPCM Codec V2.00", cmoOverwrite CreateIniKeyValue WINPATH$ + "control.ini", "drivers.desc", "imaadpcm.acm", "Microsoft IMA ADPCM Codec V2.00", cmoOverwrite WriteToLogFile "Running Regedit" Run ("regedit.exe /s " + MakePath(WINPATH$, "mplayer.reg")) Run ("regedit.exe /s " + MakePath(WINSYSPATH$, "OLE2.reg")) Run ("regedit.exe /s " + MakePath(WINSYSPATH$, "cleanup.reg")) WriteToLogFile "Putting Media Player in Accessories group" CreateProgmanItem "Accessories", "Media Player", MakePath(WinDir$, "mplayer.exe"), "", cmoOverwrite WriteToLogFile "Running Profdisp" Run ("profdisp.exe") END SUB '** '** Purpose: '** Builds the copy list and installs App software. '** Arguments: '** none. '** Returns: '** none. '************************************************************************* SUB InstallApp STATIC WriteToLogFile "InstallApp" SetTitle APPTITLE SrcDir$ = GetSymbolValue("STF_SRCDIR") CreateDir DESTPATH$, cmoNone WriteToLogFile "" WriteToLogFile " Source directory: '" + SrcDir$ + "'" WriteToLogFile " User chose destination path: '" + DESTPATH$ + "'" WriteToLogFile " User chose CD-ROM path: '" + CDPATH$ + "'" WriteToLogFile " User record path: '" + RECPATH$ + "'" WriteToLogFile " Windows directory: '" + WINPATH$ + "'" WriteToLogFile " Windows system directory: '" + WINSYSPATH$ + "'" WriteToLogFile "" ClearCopyList AddSectionFilesToCopyList "Files", SrcDir$, DESTPATH$ CopyFilesInCopyList WriteToLogFile "App files copied" ini$ = MakePath(WINPATH$, INIFILE) CreateIniKeyValue ini$, "FilePaths", "RunPath", MakePath(DESTPATH$,"") , cmoOverwrite CreateIniKeyValue ini$, "FilePaths", "VideoPath", MakePath(CDPATH$,"") , cmoOverwrite CreateIniKeyValue ini$, "FilePaths", "AudioPath", MakePath(CDPATH$,"") , cmoOverwrite CreateIniKeyValue ini$, "FilePaths", "GraphicPath", MakePath(CDPATH$,"") , cmoOverwrite CreateIniKeyValue ini$, "FilePaths", "AltGraphicPath", "", cmoOverwrite CreateIniKeyValue ini$, "FilePaths", "StudentFile", MakePath(RECPATH$,"MCWFY.REC") , cmoOverwrite CreateProgmanGroup PROGGROUP, "", cmoNone ShowProgmanGroup PROGGROUP, 1, cmoNone CreateProgmanItem PROGGROUP, PROGITEM, MakePath(DESTPATH$,PROGEXE), "", cmoOverwrite END SUB '** '** Purpose: '** Appends a file name to the end of a directory path, '** inserting a backslash character as needed. '** Arguments: '** szDir$ - full directory path (with optional ending "\") '** szFile$ - filename to append to directory '** Returns: '** Resulting fully qualified path name. '************************************************************************* FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING IF szDir$ = "" THEN MakePath = szFile$ ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN MakePath = szDir$ + szFile$ ELSE MakePath = szDir$ + "\" + szFile$ END IF END FUNCTION